c++
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=20005,LOG = 20;
int dep[N<<1], up[N<<1][LOG];
std::vector<int>g[N],adj[N<<1];
int n,m,tot;
int dfn[N],low[N],timer;
int stk[N],top;
void add(int u,int v){
adj[u].push_back(v);
adj[v].push_back(u);
}
void tarjan(int u){
dfn[u]=low[u]=++timer;
stk[++top]=u;
for(int v:g[u]){
if(!dfn[v]){
tarjan(v);
low[u]=std::min(low[u],low[v]);
if(low[v]>=dfn[u]){
int sq=++tot;
add(sq,u);
do{
add(sq,stk[top]);
}while(stk[top--]!=v);
}
}else{
low[u]=std::min(low[u],dfn[v]);
}
}
}
void dfs(int u, int p) {
dep[u] = dep[p] + 1;
up[u][0] = p;
for (int i = 1; i < LOG; ++i)
up[u][i] = up[up[u][i - 1]][i - 1];
for (int v : adj[u])
if (v != p) dfs(v, u);
}
int lca(int u,int v){
if(dep[u]<dep[v])std::swap(u,v);
int d=dep[u]-dep[v];
for(int i=0;i<LOG;i++)
if((d>>i)&1)u=up[u][i];
if(u==v)return u;
for(int i=LOG-1;i>=0;i--)
if(up[u][i]!=up[v][i])
u=up[u][i],v=up[v][i];
return up[u][0];
}
bool check(int u,int w,int f){
return lca(u,w)==w&&lca(w,f)==f;
}
void fc() {
std::cin>>n>>m;
for(int i=0;i<m;i++){
int u,v;std::cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
tot=n;
tarjan(1);
dfs(1,0);
int q;std::cin>>q;
while(q--){
int u,v,w;std::cin>>u>>v>>w;
int f=lca(u,v);
std::cout<<(check(u,w,f)||check(v,w,f)?"yes":"no")<<"\n";
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
//std::cin>>t;
while (t--) fc();
return 0;
}